Sage: Hybrid Checking for Flexible Specifications
نویسندگان
چکیده
Software systems typically contain large APIs that are informally specified and hence easily misused. This paper presents the Sage programming language, which is designed to enforce precise interface specifications in a flexible manner. The Sage type system uses a synthesis of the type Dynamic, first-class types, and arbitrary refinement types. Since type checking for this expressive language is not statically decidable, Sage uses hybrid type checking, which extends static type checking with dynamic contract checking, automatic theorem proving, and a database of refuted subtype judgments.
منابع مشابه
Executable Refinement Types
Executable Refinement Types by Kenneth L. Knowles Precise specifications are integral to effective programming practice. Existing specification disciplines such as structural type systems, dynamic contracts, and extended static checking all suffer from limitations such as imprecision, false positives, false negatives, or excessive manual proof burden. New ways of expressing and enforcing progra...
متن کاملHybrid Concepts of the Control and Anti-Control of Flexible Joint Manipulator
This paper presents a Gaussian radial basis function neural network based on sliding mode control for trajectory tracking and vibration control of a flexible joint manipulator. To study the effectiveness of the controllers, designed controller is developed for tip angular position control of a flexible joint manipulator. The adaptation laws of designed controller are obtained based on sliding m...
متن کاملSage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report)
This paper presents Sage, a functional programming language with a rich type system that supports a broad range of typing paradigms, from dynamically-typed Scheme-like programming, to decidable ML-like types, to precise refinement types. This type system is a synthesis of three general concepts — first-class types, general refinement types, and the type Dynamic — that add expressive power in or...
متن کاملHybrid Types, Invariants, and Refinements For Imperative Objects
To control the complexity of large object-oriented systems, objects should communicate via precisely-specified interfaces. Static type checking catches many interface violations early in the development cycle, but decidability limitations preclude checking all desired properties statically. In contrast, dynamic checking supports expressive specifications but may miss errors on execution paths t...
متن کاملA Hybrid Meta-heuristic Approach to Cope with State Space Explosion in Model Checking Technique for Deadlock Freeness
Model checking is an automatic technique for software verification through which all reachable states are generated from an initial state to finding errors and desirable patterns. In the model checking approach, the behavior and structure of system should be modeled. Graph transformation system is a graphical formal modeling language to specify and model the system. However, modeling of large s...
متن کامل